/**
 * 本地通知工具类
 */
export default {
  /**
   * 发送本地通知
   * @param {Object} options 通知配置
   * @param {String} options.title 通知标题
   * @param {String} options.content 通知内容
   * @param {Number} options.delay 延迟时间(毫秒)
   * @param {Object} options.payload 通知携带的数据
   */
  sendLocalNotification(options = {}) {
    console.log('发送本地通知，参数:', options);
    
    // #ifdef APP-PLUS
    console.log('当前平台: APP-PLUS');
    const notification = {
      title: options.title || '提示',
      content: options.content || '',
      payload: options.payload || {},
      when: options.delay ? new Date().getTime() + options.delay : new Date().getTime()
    };
    
    console.log('通知参数:', notification);
    
    try {
      // 创建本地通知
      plus.push.createMessage(
        notification.content,
        notification.payload,
        {
          title: notification.title,
          when: notification.when
        }
      );
      console.log('通知发送成功');
    } catch (error) {
      console.error('创建通知时出错:', error);
    }
    // #endif
    
    // #ifndef APP-PLUS
    console.log('当前平台: H5或小程序');
    // H5和小程序使用uni.showToast作为替代
    uni.showToast({
      title: options.title || '提示',
      icon: 'none',
      duration: options.delay || 2000
    });
    console.log('通知发送成功');
    // #endif
  },

  /**
   * 监听点击通知事件
   * @param {Function} callback 点击通知后的回调函数
   */
  onClickNotification(callback) {
    // #ifdef APP-PLUS
    plus.push.addEventListener('click', function(msg) {
      callback && callback(msg);
    });
    // #endif
  },

  /**
   * 监听收到通知事件
   * @param {Function} callback 收到通知后的回调函数
   */
  onReceiveNotification(callback) {
    // #ifdef APP-PLUS
    plus.push.addEventListener('receive', function(msg) {
      callback && callback(msg);
    });
    // #endif
  },

  /**
   * 发送定时任务通知
   * @param {String} jobName 任务名称
   * @param {String} description 任务描述
   */
  sendJobNotification(jobName, description) {
    this.sendLocalNotification({
      title: '定时任务提醒',
      content: `${jobName}: ${description}`,
      payload: {
        type: 'job',
        jobName: jobName
      }
    });
  },

  /**
   * 发送系统通知
   * @param {String} title 通知标题
   * @param {String} content 通知内容
   */
  sendSystemNotification(title, content) {
    this.sendLocalNotification({
      title: title,
      content: content,
      payload: {
        type: 'system'
      }
    });
  },
  
  /**
   * 发送每日提醒通知
   * @param {Object} message 消息对象
   */
  sendDailyNotification(message) {
    this.sendLocalNotification({
      title: message.title || '每日提醒',
      content: message.content || '您有一条新的通知',
      payload: {
        type: 'notification',
        time: message.time
      }
    });
  }
}